package mySql

import (
	"project/controller"
	"time"
)

/**
 * @File : writeData.go
 * @Description : 将数据保存到数据库中
 * @Author : 吴概
 * @Date : 2023/2/7
 */

// NewVideosData 保存新视频，会自动填上作者Id以及上传时间
func NewVideosData(newVideo controller.Video) {
	newVideo.AuthorId = newVideo.Author.Id
	newVideo.Time = time.Now().Format("2006-01-02 15:04:05")
	db.Create(&newVideo)
}

// NewUsersData 新建用户,同时创建关系列表
func NewUsersData(newUser controller.User) {
	db.Create(&controller.Publish{})
	db.Create(&controller.Relation{})
	db.Create(&newUser)
	// 创建喜欢列表
	db.Create(&controller.Like{})
}

// NewCommentData 新建评论,自动填充评论者的Id以及上传时间
func NewCommentData(newComment controller.Comment) {
	newComment.UserId = newComment.User.Id
	db.Create(&newComment)
}

func NewChat(mark string) {
	newChat := controller.Chat{
		Mark: mark,
	}
	db.Create(&newChat)
}

func NewMessage(message controller.Message) controller.Message {
	message.CreateTime = time.Now().Unix()
	db.Create(&message)
	db.Last(&message)
	return message
}

func SaveUser(user controller.User) {
	db.Save(&user)
}
func SaveRelation(relation controller.Relation) {
	db.Save(&relation)
}
func SavePublish(publish controller.Publish) {
	db.Save(&publish)
}

// 更新视频数据，点赞操作用
func SaveVideo(video controller.Video) {
	db.Save(&video)
}

// 更新 like
func SaveLike(like controller.Like) {
	db.Save(&like)
}

func SaveChat(chat controller.Chat) {
	db.Save(&chat)
}

func SaveComment(comment controller.Comment) {
	db.Save(&comment)
}

// TableDataUpdate 用于加载demoData.go中的实例数据，若不需要可以在SqlInit()方法中注释掉此方法
func TableDataUpdate() {
	UpdateUsersData()
	UpdateVideosData()
	UpdateCommentData()
	UpdateRelationData()
	UpdatePublishData()
	UpdateLikeData()
}

// UpdateUsersData 将demoData.go中的用户实例文件填入数据库
func UpdateUsersData() {
	for _, v := range controller.DemoUsers {
		db.Save(&v)
	}
}

// UpdateVideosData 将demoData.go中的视频实例文件填入数据库
func UpdateVideosData() {
	for _, v := range controller.DemoVideos {
		v.AuthorId = v.Author.Id
		db.Save(&v)
	}
}

// UpdateCommentData 将demoData.go中的评论实例文件填入数据库
func UpdateCommentData() {
	for _, v := range controller.DemoCommentList {
		db.Save(&v)
	}
}

func UpdateRelationData() {
	for _, v := range controller.DemoRelationList {
		db.Save(&v)
	}
}

func UpdatePublishData() {
	for _, v := range controller.DemoPublishList {
		db.Save(&v)
	}
}

func UpdateLikeData() {
	for _, v := range controller.DemoLikeList {
		db.Save(&v)
	}
}
